package com.huike.clues.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.page.PageMethod;
import com.huike.clues.domain.SysDict;
import com.huike.clues.mapper.SysDictMapper;
import com.huike.clues.service.ISysDictService;
import com.huike.common.core.domain.entity.SysDictTypeDTO;
import com.huike.common.core.domain.entity.SysDictTypePageQueryDTO;
import com.huike.common.core.page.PageDomain;
import com.huike.common.core.page.TableDataInfo;
import com.huike.common.utils.DateUtils;
import com.huike.common.utils.DictUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Desciption SysDictServiceImpl
 * @Author LUXIN
 * @Date 2023-10-15
 */
@Service
public class SysDictServiceImpl implements ISysDictService {

    @Resource
    private SysDictMapper sysDictMapper;

    /**
     * 分页查询
     *
     * @param sysDict
     * @return
     */
    @Override
    public List<SysDictTypeDTO> PageList(SysDictTypeDTO sysDict) {
        List<SysDictTypeDTO> sysDictTypeDTOList = sysDictMapper.findList(sysDict);
        return sysDictTypeDTOList;
    }

    /**
     * 新增字典类型数据
     *
     * @param dict
     */
    @Override
    public void addType(SysDict dict) {
        // 暂时填充缺失的数据
        dict.setCreateBy("admin");
        dict.setCreateTime(LocalDateTime.now().toString());
        dict.setUpdateBy("");
        // 接收前端发送来的数据插入数据库
        sysDictMapper.insert(dict);
    }


    /**
     * 修改字典类型数据
     *
     * @param dict
     */
    @Override
    public void updateType(SysDict dict) {
        // 暂时赋值
        dict.setUpdateBy("admin");
        sysDictMapper.update(dict);
    }

    /**
     * 查询字典类型详细数据
     *
     * @param dictId
     * @return
     */
    @Override
    public SysDictTypeDTO findDictType(Integer dictId) {
        // 使用MP进行查询
        return sysDictMapper.selectById(dictId);
    }

    /**
     * 删除字典类型
     *
     * @param dictIds
     */
    @Override
    public void delete(List<String> dictIds) {
        dictIds.forEach(id -> {
            Integer ids = Integer.parseInt(id);
            List<Integer> idList = Arrays.asList(ids);
            sysDictMapper.deleteByIdList(idList);
        });
    }

    /**
     * 获取字典选择框列表
     *
     * @return
     */
    @Override
    public List<SysDict> findOptionselect(String status) {
        // 根据字典的状态进行选择
        return sysDictMapper.ListByStatus(status);
    }
}
